package utils

import (
	"os"

	"github.com/sirupsen/logrus"
	"github.com/spf13/viper"
)

// InitLogger 初始化日志
func InitLogger() {
	// 设置日志级别
	level := viper.GetString("logging.level")
	switch level {
	case "debug":
		logrus.SetLevel(logrus.DebugLevel)
	case "info":
		logrus.SetLevel(logrus.InfoLevel)
	case "warn":
		logrus.SetLevel(logrus.WarnLevel)
	case "error":
		logrus.SetLevel(logrus.ErrorLevel)
	default:
		logrus.SetLevel(logrus.InfoLevel)
	}

	// 设置日志格式
	format := viper.GetString("logging.format")
	if format == "json" {
		logrus.SetFormatter(&logrus.JSONFormatter{})
	} else {
		logrus.SetFormatter(&logrus.TextFormatter{
			FullTimestamp: true,
		})
	}

	// 设置输出
	output := viper.GetString("logging.output")
	if output == "file" {
		filePath := viper.GetString("logging.file_path")
		if filePath != "" {
			file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
			if err == nil {
				logrus.SetOutput(file)
			} else {
				logrus.Warnf("无法打开日志文件 %s: %v", filePath, err)
			}
		}
	}

	logrus.Info("日志系统初始化完成")
}

// GetLogger 获取日志实例
func GetLogger() *logrus.Logger {
	return logrus.StandardLogger()
}